Photon Project | 31/10/20

Towards the end of my 2020 summer hoilday I began working on a project using Photon (a networking solution). Right now the game is in a state where pretty much all the programming is done but due to university and a lack of motivation to get on with the all the artwork and level design that needs to be done in order to make this project a game rather than just a tech demo, progress has halted. I don't know if this project will ever get finished, but I do know that I learned so much while working on it that it was worth doing regardless. If I do get round to completing the game I will update this page, but until then I want at least a record of what I've done.

What follows is a list of all the key things that I developed for this game. If completed, it would be a 2D party arena shooter inspired by Raze 2.

  • Public and private customisable rooms.
  • Player manager and player controller networking structure.
  • 7 gamemodes: Deathmatch, Team Deathmatch, Elimination, Team Elimination, Capture The Flag, Domination and Juggernaut.
  • UI, killfeed and Scoreboard.
  • Player stats (eg: kills, deaths, etc).
  • Full shop system.
  • 25 weapons, 8 abilities and 20 perks (and there relevant systems).
  • Complete player character.
  • Complete weapon system, including accuracy (recoil, movement, etc) and 7 different classifications of weapons (eg: explosive, sniper, etc).
  • Saving / loading.
  • Power ups.
  • Weapon spawning system.
  • And a bunch of stuff I'm sure I'm forgetting...
  • I think the majority of the code I wrote for this project was pretty good, though I would definitely do some things differently if I work on a Photon project again. My next step with networking is going to be working out how to use the Steam API, as my favourite types of games are co-op ones and Steam has a very nice way of implementing this.

    Doing this project has helped me a lot and has allowed me to solve problems such as spawning an object on the network but making it appear differently for different players and how to create a hierarchy of scriptable objects to efficiently add multiple custom objects such as weapons and perks - both for shop and in game use. This in turn has given me a base for implementing similar features in the future and has allowed me to gain a stronger understanding of how networking works and how to optimally use more of Unity's features.

    As I said at the start, I don't know if I will get round to finishing this project. However, I have no doubts that what I have learned while creating it will assist me in the future. It also helps that it was pretty fun :).